/*
 * TelaProduto.java
 *
 * Created on __DATE__, __TIME__
 */

package telas.aluguel;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import business.aluguel.Produto;
import business.sistema.ExceptionSistema;
import business.sistema.IObjetoSistema;
import telas.comum.TelaMDI;

/**
 *
 * @author  __USER__
 */
public class TelaProduto extends TelaMDI
{
	private static final long serialVersionUID = 652832363485798662L;

	/** Creates new form TelaProduto */
	public TelaProduto() throws Exception
	{
		initComponents();

		eventoBuscar();
		eventoNovo();
		eventoEditar();
		eventoExcluir();
	}

	private void eventoExcluir()
	{
		barraFerramenta1.getBtExcluir().addActionListener(new ActionListener()
		{

			@Override
			public void actionPerformed(ActionEvent e)
			{
				try
				{
					exluirProduto();
				} catch (Exception ex)
				{
					new ExceptionSistema(ex);
				}
			}
		});
	}

	private void exluirProduto() throws Exception
	{
		Produto produto = (Produto) tblProdutos.getObjetoCorrente();

		produto.excluir();

		preencheTabelaProdutos();
	}

	private void eventoEditar()
	{
		barraFerramenta1.getBtEditar().addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				try
				{
					abrirTela(false);
				} catch (Exception ex)
				{
					new ExceptionSistema(ex);
				}
			}
		});
	}

	private void eventoNovo()
	{
		barraFerramenta1.getBtNovo().addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				try
				{
					abrirTela(true);
				} catch (Exception ex)
				{
					new ExceptionSistema(ex);
				}
			}
		});
	}

	private void abrirTela(boolean novo) throws Exception
	{
		Produto produto;

		if (novo)
		{
			produto = new Produto();
		} else
		{
			produto = (Produto) tblProdutos.getObjetoCorrente();
		}

		new TelaProdutoCadastro(produto, novo);

		preencheTabelaProdutos();
	}

	private void eventoBuscar()
	{
		barraFerramenta1.getBtBusca().addActionListener(new ActionListener()
		{
			@Override
			public void actionPerformed(ActionEvent e)
			{
				try
				{
					preencheTabelaProdutos();
				} catch (Exception ex)
				{
					new ExceptionSistema(ex);
				}
			}
		});
	}

	private void preencheTabelaProdutos() throws Exception
	{
		List<IObjetoSistema> produtos = new Produto()
				.obterTodosPorFiltro(filtro());

		tblProdutos.setDados(produtos);
		tblProdutos.setColunas(colunasTabelaProdutos());
		tblProdutos.bind();
	}

	private String filtro() throws Exception
	{
		String criterio = "1 = 1";

		if (!ctNome.getText().equals(""))
		{
			criterio += " AND UPPER(this_.nome) LIKE '%UPPER("
					+ ctNome.getText() + ")%'";
		}

		return criterio;
	}

	private ArrayList<String[]> colunasTabelaProdutos()
	{
		ArrayList<String[]> dscColunas = new ArrayList<String[]>();
		dscColunas.add(new String[]
		{ "Nome", "getNome", "400" });
		dscColunas.add(new String[]
		{ "Valor", "getValor" });

		return dscColunas;
	}

	/** This method is called from within the constructor to
	 * initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is
	 * always regenerated by the Form Editor.
	 */
	//GEN-BEGIN:initComponents
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents()
	{

		pnlPrincipal = new telas.componentes.Painel();
		barraFerramenta1 = new telas.componentes.BarraFerramenta();
		pnlCadastro = new telas.componentes.Painel();
		pnlFiltro = new telas.componentes.Painel();
		rotulo1 = new telas.componentes.Rotulo();
		ctNome = new telas.componentes.CampoTexto();
		jScrollPane1 = new javax.swing.JScrollPane();
		tblProdutos = new telas.componentes.Tabela();

		setTitle("Produtos");

		pnlPrincipal.setLayout(new java.awt.BorderLayout());

		barraFerramenta1.setRollover(true);
		pnlPrincipal.add(barraFerramenta1, java.awt.BorderLayout.PAGE_START);

		pnlCadastro.setLayout(new java.awt.BorderLayout());

		pnlFiltro.setBorder(javax.swing.BorderFactory
				.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));

		rotulo1.setText("Nome:");

		ctNome.setMaxLength(100);

		javax.swing.GroupLayout pnlFiltroLayout = new javax.swing.GroupLayout(
				pnlFiltro);
		pnlFiltro.setLayout(pnlFiltroLayout);
		pnlFiltroLayout
				.setHorizontalGroup(pnlFiltroLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								pnlFiltroLayout
										.createSequentialGroup()
										.addContainerGap()
										.addComponent(
												rotulo1,
												javax.swing.GroupLayout.PREFERRED_SIZE,
												javax.swing.GroupLayout.DEFAULT_SIZE,
												javax.swing.GroupLayout.PREFERRED_SIZE)
										.addPreferredGap(
												javax.swing.LayoutStyle.ComponentPlacement.RELATED)
										.addComponent(
												ctNome,
												javax.swing.GroupLayout.DEFAULT_SIZE,
												572, Short.MAX_VALUE)
										.addContainerGap()));
		pnlFiltroLayout
				.setVerticalGroup(pnlFiltroLayout
						.createParallelGroup(
								javax.swing.GroupLayout.Alignment.LEADING)
						.addGroup(
								pnlFiltroLayout
										.createSequentialGroup()
										.addContainerGap()
										.addGroup(
												pnlFiltroLayout
														.createParallelGroup(
																javax.swing.GroupLayout.Alignment.BASELINE)
														.addComponent(
																rotulo1,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																javax.swing.GroupLayout.PREFERRED_SIZE)
														.addComponent(
																ctNome,
																javax.swing.GroupLayout.PREFERRED_SIZE,
																javax.swing.GroupLayout.DEFAULT_SIZE,
																javax.swing.GroupLayout.PREFERRED_SIZE))
										.addContainerGap(
												javax.swing.GroupLayout.DEFAULT_SIZE,
												Short.MAX_VALUE)));

		pnlCadastro.add(pnlFiltro, java.awt.BorderLayout.PAGE_START);

		jScrollPane1.setBorder(javax.swing.BorderFactory
				.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));

		tblProdutos.setModel(new javax.swing.table.DefaultTableModel(
				new Object[][]
				{

				}, new String[]
				{

				}));
		jScrollPane1.setViewportView(tblProdutos);

		pnlCadastro.add(jScrollPane1, java.awt.BorderLayout.CENTER);

		pnlPrincipal.add(pnlCadastro, java.awt.BorderLayout.CENTER);

		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
				getContentPane());
		getContentPane().setLayout(layout);
		layout.setHorizontalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addComponent(
				pnlPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, 646,
				Short.MAX_VALUE));
		layout.setVerticalGroup(layout.createParallelGroup(
				javax.swing.GroupLayout.Alignment.LEADING).addComponent(
				pnlPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, 323,
				Short.MAX_VALUE));

		pack();
	}// </editor-fold>
	//GEN-END:initComponents

	//GEN-BEGIN:variables
	// Variables declaration - do not modify
	private telas.componentes.BarraFerramenta barraFerramenta1;
	private telas.componentes.CampoTexto ctNome;
	private javax.swing.JScrollPane jScrollPane1;
	private telas.componentes.Painel pnlCadastro;
	private telas.componentes.Painel pnlFiltro;
	private telas.componentes.Painel pnlPrincipal;
	private telas.componentes.Rotulo rotulo1;
	private telas.componentes.Tabela tblProdutos;
	// End of variables declaration//GEN-END:variables

}